/*
    ** Auther:zxx
    ** Desc:cv辅助线功能
    ** Date:2019.11.20
*/
#ifndef QCVIMAGEOPERATE_H
#define QCVIMAGEOPERATE_H

#include <QObject>
#include <opencv2/opencv.hpp>



class QCvImageOperate
{
public:
    QCvImageOperate();

    /*
     * Arg1:焊枪x
     * Arg2:焊枪y
    */
    static void draw_calibration(cv::Mat &cvImg,int x,int y,bool caliEnd = false);


    /**
     * @brief draw_Aux
     * @param cvImg
     * @param x
     * @param y
     * @param model -1.没有选择 0.不需要绘制  1.绘制常规辅助线  2.绘制格点辅助线  3.全部绘制
     * @details 绘制辅助线
     */
    static void draw_Aux(cv::Mat &cvImg,int x,int y,int model);

protected:
    static void draw_limit(cv::Mat &cvImg, int x1, int x2);    //绘制限位区间
    /**
     * @brief draw_calibration_region
     * @param cvImg
     * @param x
     * @param y
     * @param width
     * @param height
     * @details 绘制一个矩形区域
     */
    static void draw_calibration_region(cv::Mat &cvImg, int x, int y,int width,int height);    //绘制标定区域
    /**
     * @brief draw_focus_line
     * @param cvImg
     * @param x
     * @param y
     * @details 绘制两条白色的线，焦点位置为x,y
     */
    static void draw_focus_line(cv::Mat &cvImg, int x, int y);    //绘制聚焦线


public:
    /**
     * @brief draw_full_line
     * @param cvImg
     * @param color
     * @param x
     * @param y
     * @details 默认绘制一条竖线，充满图像
     */
    static void draw_full_line(cv::Mat &cvImg,const cv::Scalar& color,int x,int y = 0);

    /**
     * @brief draw_circle
     * @param cvImg
     * @param color
     * @param length
     * @param x
     * @param y
     * @details 画一个圆
     */
    static void draw_circle(cv::Mat &cvImg,const cv::Scalar& color,int length,int x,int y = 0);
    /**
     * @brief draw_rectangle
     * @param cvImg
     * @param color
     * @param x
     * @param y
     * @param width
     * @param height
     * @details 画一个矩形
     */
    static void draw_rectangle(cv::Mat &cvImg,const cv::Scalar& color, int x, int y,int width,int height);

    /**
     * @brief draw_focus_plus
     * @param cvImg
     * @param color
     * @param x
     * @param y
     * @details 画一个加号
     */
    static void draw_focus_plus(cv::Mat &cvImg,const cv::Scalar& color, int x, int y);    //绘制聚焦线
};

#endif // QCVIMAGEOPERATE_H
